package com.linzm.leetcode.primary.exercises3_20230122;

/**
 * @Author zimingl
 * @Date 2023/1/24 20:30
 * @Description: 6 和 9 组成的最大数字
 */
public class Demo16_1323 {
    /**
     * 给你一个仅由数字 6 和 9 组成的正整数 num。
     * 你最多只能翻转一位数字，将 6 变成 9，或者把 9 变成 6 。
     * 请返回你可以得到的最大数字。
     * 输入：num = 9669
     * 输出：9969
     * 解释：
     * 改变第一位数字可以得到 6669 。
     * 改变第二位数字可以得到 9969 。
     * 改变第三位数字可以得到 9699 。
     * 改变第四位数字可以得到 9666 。
     * 其中最大的数字是 9969 。
     * 输入：num = 9999
     * 输出：9999
     * 解释：无需改变就已经是最大的数字了。
     */
    public static void main(String[] args) {
        Demo16_1323 demo16_1323 = new Demo16_1323();
        int num = 9669;
        int number = demo16_1323.maximum69Number(num);
        System.out.println(number);
    }

    private int maximum69Number (int num) {
        String numStr = String.valueOf(num);
        char[] chars = numStr.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == '6') {
                chars[i] = '9';
                break;
            }
        }
        String resStr = new String(chars);
        return (int) Integer.valueOf(resStr);
    }

    private void swap(char[] chars, int i, int j) {
        char tmp = chars[i];
        chars[i] = chars[j];
        chars[j] = tmp;
    }
}
